<?php

/**
 * This is the model class for table "tbl_material".
 *
 * The followings are the available columns in table 'tbl_material':
 * @property integer $tipo_id
 * @property integer $marca_id
 * @property integer $modelo_id
 * @property integer $proyecto_id
 * @property integer $ubicacion_id
 * @property integer $cantidad
 * @property integer $id
 *
 * The followings are the available model relations:
 * @property Modelo $modelo
 * @property Modelo $tipo
 * @property Modelo $marca
 * @property Proyecto $proyecto
 * @property Ubicacion $ubicacion
 */
class Material extends CActiveRecord
{
	/**
	 * Returns the static model of the specified AR class.
	 * @param string $className active record class name.
	 * @return Material the static model class
	 */
	public static function model($className=__CLASS__)
	{
		return parent::model($className);
	}

	/**
	 * @return string the associated database table name
	 */
	public function tableName()
	{
		return 'tbl_material';
	}

	/**
	 * @return array validation rules for model attributes.
	 */
	public function rules()
	{
		// NOTE: you should only define rules for those attributes that
		// will receive user inputs.
		return array(
			array('tipo_id, marca_id, modelo_id, proyecto_id, ubicacion_id, cantidad', 'required'),
			array('tipo_id, marca_id, modelo_id, proyecto_id, ubicacion_id, cantidad', 'numerical', 'integerOnly'=>true),
			// The following rule is used by search().
			// Please remove those attributes that should not be searched.
			array('tipo_id, marca_id, modelo_id, proyecto_id, ubicacion_id, cantidad, id', 'safe', 'on'=>'search'),
		);
	}

	/**
	 * @return array relational rules.
	 */
	public function relations()
	{
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(
			'modelo' => array(self::BELONGS_TO, 'Modelo', 'modelo_id'),
			'tipo' => array(self::BELONGS_TO, 'Modelo', 'tipo_id'),
			'marca' => array(self::BELONGS_TO, 'Modelo', 'marca_id'),
			'proyecto' => array(self::BELONGS_TO, 'Proyecto', 'proyecto_id'),
			'ubicacion' => array(self::BELONGS_TO, 'Ubicacion', 'ubicacion_id'),
		);
	}

	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels()
	{
		return array(
			'tipo_id' => 'Tipo',
			'marca_id' => 'Marca',
			'modelo_id' => 'Modelo',
			'proyecto_id' => 'Proyecto',
			'ubicacion_id' => 'Ubicacion',
			'cantidad' => 'Cantidad',
			'id' => 'ID',
		);
	}

	/**
	 * Retrieves a list of models based on the current search/filter conditions.
	 * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.
	 */
	public function search()
	{
		// Warning: Please modify the following code to remove attributes that
		// should not be searched.

		$criteria=new CDbCriteria;

		$criteria->compare('tipo_id',$this->tipo_id);
		$criteria->compare('marca_id',$this->marca_id);
		$criteria->compare('modelo_id',$this->modelo_id);
		$criteria->compare('proyecto_id',$this->proyecto_id);
		$criteria->compare('ubicacion_id',$this->ubicacion_id);
		$criteria->compare('cantidad',$this->cantidad);
		$criteria->compare('id',$this->id);

		return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
		));
	}
	
	/**
	* @return string the tipo text display for the current material
	*/
	public function getTipoText()
	{
		$tiposOptions=Tipo::model()->tiposOptions;
		return isset($tiposOptions[$this->tipo_id]) ?
		$tiposOptions[$this->tipo_id] : "Tipo no definido ({$this->tipo_id})";
	}
	
	/**
	* @return string the tipo text display for the current material
	*/
	public function getMarcaText()
	{
		$marcasOptions=Marca::model()->marcasOptions;
		return isset($marcasOptions[$this->marca_id]) ?
		$marcasOptions[$this->marca_id] : "Marca no definida ({$this->marca_id})";
	}
	
	/**
	* @return string the tipo text display for the current material
	*/
	public function getModeloText()
	{
		$modelosOptions=Modelo::model()->ModelosOptions;
		return isset($modelosOptions[$this->modelo_id]) ?
		$modelosOptions[$this->modelo_id] : "Modelo no definido ({$this->modelo_id})";
	}
	
	/**
	* @return string the tipo text display for the current material
	*/
	public function getProyectoText()
	{
		$proyectosOptions=Proyecto::model()->proyectosOptions;
		return isset($proyectosOptions[$this->proyecto_id]) ?
		$proyectosOptions[$this->proyecto_id] : "Proyecto no definido ({$this->proyecto_id})";
	}
	
	/**
	* @return string the tipo text display for the current material
	*/
	public function getUbicacionText()
	{
		$ubicacionesOptions=Ubicacion::model()->ubicacionesOptions;
		return isset($ubicacionesOptions[$this->ubicacion_id]) ?
		$ubicacionesOptions[$this->ubicacion_id] : "Ubicacion no definida ({$this->ubicacion_id})";
	}
}